package com.bjsxt.mappers;

import com.bjsxt.domain.Coin;
import com.bjsxt.dto.CoinDto;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * description:
 * OpenFeign 远程调用 Coin <--> CoinDto 的映射转换对象
 *
 * @author ALIENWARE
 * @version v1.0.0
 * @create 06/01/2024
 **/
@Mapper(componentModel = "spring")
public interface CoinDtoMapper {

    /**
     * 获取该对象的实例，这一步与类加载器有关，有兴趣学学 JVM
     */
    // 获取该对象的实例
    CoinDtoMapper INSTANCE = Mappers.getMapper(CoinDtoMapper.class);

    /**
     * 将 Coin 对象转换为 CoinDto 对象
     *
     * @param source Coin 对象
     * @return 转换为的 CoinDto 对象
     */
    CoinDto convert2Dto(Coin source);

    /**
     * 将 CoinDto 对象转换为 Coin 对象
     *
     * @param source CoinDto 对象
     * @return 转换为的 Coin 对象
     */
    Coin convert2Entity(CoinDto source);

    /**
     * 将 Coin 集合对象转换为 CoinDto 集合对象
     *
     * @param source Coin 集合对象
     * @return 转换为的 CoinDto 集合对象
     */
    List<CoinDto> convert2Dto(List<Coin> source);

    /**
     * 将 CoinDto 集合对象转换为 Coin 集合对象
     *
     * @param source CoinDto 集合对象
     * @return 转换为的 Coin 集合对象
     */
    List<Coin> convert2Entity(List<CoinDto> source);
}
